package com.ruoyi.web.controller.product.service;

import com.ruoyi.common.core.domain.Ztree;
import com.ruoyi.common.entity.VO.product.ProductCategorySearchVO;
import com.ruoyi.common.entity.VO.product.ProductCategoryVO;

import java.util.List;

public interface IBackProductCategoryService {

    List<ProductCategoryVO> searchCategoryList(ProductCategorySearchVO categorySearchVO);

    List<Ztree> searchCategoryTree(ProductCategorySearchVO categorySearchVO);

    /**
     * 根据分类ID查询信息
     *
     * @param categoryId 分类ID
     * @return 分类信息
     */
    ProductCategoryVO getCategoryInfoById(Long categoryId);

    /**
     * 查询分类数量
     *
     * @param categorySearchVO
     * @return
     */
    int countCategory(ProductCategorySearchVO categorySearchVO);

    /**
     * 校验分类名称是否唯一
     *
     * @param categorySearchVO 分类查询信息
     * @return 结果
     */
    String checkCategoryNameUnique(ProductCategorySearchVO categorySearchVO);

    /**
     * 检查分类和原料是否有关联
     *
     * @param categoryId
     */
    boolean checkCategoryExistProduct(Long categoryId);

    /**
     * 新增分类信息
     *
     * @param categoryVO 分类信息
     * @return 结果
     */
    int insertCategory(ProductCategoryVO categoryVO);

    /**
     * 修改分类信息
     *
     * @param categoryVO 分类信息
     * @return 结果
     */
    int updateCategory(ProductCategoryVO categoryVO);

    /**
     * 删除分类信息
     *
     * @param id 分类ID
     * @return 结果
     */
    int deleteCategoryById(Long id);

    /**
     * 导入商品时处理分类
     * @param parentId
     * @param categoryName
     * @return
     */
    Long handleImport(Long parentId, String categoryName);

}
